package com.wechat.pay.contrib.apache.httpclient.auth;

import java.security.cert.X509Certificate;

/**
 * 使用微信平台证书验证签名
 */
public interface Verifier {

    /**
     * 使用微信平台证书对应答进行验签
     * 注: 在实现过程中的注意微信方的平台证书可能会更换,所以证书得保持最新, 否则就算是微信的应答也不能验签通过;
     * 可以是单独中控服务来获取证书, 也可以定时任务更新证书;
     *
     * @param serialNumber 平台证书序列号, 此序列号应为16进制数, 可以使用{@link java.math.BigInteger}进行转换;
     * @param message      消息组合串, 由时间戳, 随机串, 应答消息体组成;
     * @param signature    微信支付的应答头中的签名;
     * @return 是否验签通过;
     */
    boolean verify(String serialNumber, byte[] message, String signature);

    X509Certificate getValidCertificate();
}
